using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace GuiDifuso
{
    public partial class EstablercerEntradas : Form
    {
        ControladorDifuso.Conjunto.EspacioDifuso antecedente;
        double anchoPluma;

        public ControladorDifuso.Conjunto.EspacioDifuso Antecedente
        {
            set
            {
                this.antecedente = value;
            }
        }

        public EstablercerEntradas()
        {
            InitializeComponent();
        }

        private void btAceptar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btAceptar_Click_1(object sender, EventArgs e)
        {
            this.Close();
        }

        private void Redibujar()
        {
            int numerodatos = ControladorDifuso.Conjunto.EspacioDifuso.NumeroMuestras;
            double[] x, y;
            x = new double[numerodatos];
            y = new double[numerodatos];
            this.controlPloteadoAntecedente.Clear();
            foreach (ControladorDifuso.Conjunto.ConjuntoDifuso conjunto in this.antecedente.ConjuntosDifusos)
            {
                x = new double[numerodatos];
                y = new double[numerodatos];
                conjunto.Muestreo(ref x, ref y);
                this.controlPloteadoAntecedente.Plot(x, y, Color.Blue, this.anchoPluma);
            }
        }

        private void EstablercerEntradas_Load(object sender, EventArgs e)
        {
            this.controlPloteadoAntecedente.startX = (double)this.antecedente.ValorMinimo;
            this.tBarValor.Minimum = (int)this.antecedente.ValorMinimo;
            this.controlPloteadoAntecedente.endX = (double)this.antecedente.ValorMaximo;
            this.controlPloteadoAntecedente.title = this.antecedente.Descripcion;
            this.tBarValor.Maximum= (int)this.antecedente.ValorMaximo;
            this.controlPloteadoAntecedente.stepX = (double)((this.antecedente.ValorMaximo-this.antecedente.ValorMinimo)/10);
            this.anchoPluma = (double)(0.1m / (this.antecedente.ValorMaximo - this.antecedente.ValorMinimo));
            this.nUValor.Increment = 0.001m;
            this.Redibujar();
        }

        private void tBarValor_Scroll(object sender, EventArgs e)
        {
            this.Redibujar();
            double [] x = new double [1], y = new double[1];
            x[0] = this.tBarValor.Value;
            y[0] = 1.0;
            this.controlPloteadoAntecedente.Hist(x, y, 4*this.anchoPluma,Color.Blue);
            this.nUValor.Value = this.tBarValor.Value;
        }

        private void nUValor_ValueChanged(object sender, EventArgs e)
        {
            this.tBarValor.Value = (int)this.nUValor.Value;
            this.antecedente.Muestra = this.nUValor.Value;
        }
    }
}